
package redeS.mensagem;

/**
 * Mensagem QueryHit.
 * A mensagem Gnutella QueryHit é uma resposta à mensagem Query.
 * @author thiago-pc
 */
public class QueryHit extends GnutellaMessage {
	
	private int indexOfNode;
	// numberOfFiles não é relevante na simulação, basta apenas saber que esse nó respondeu.
	private boolean firewalled;

	/**
	 * Além dos dados do cabeçalho (veja abaixo no construtor da superclasse), contem dois
	 * parâmetros referentes ao nó que respondeu ao Query.
	 * @param indexOfNode Índice do nó na rede. Representa o IP e a porta de conexão.
	 * @param firewalled Indica a presença de firewall no nó.
	 * @see GnutellaMessage#GnutellaMessage(long, int)
	 */
	public QueryHit(long descriptorID, int TTL, int indexOfNode, boolean firewalled) {
		super(descriptorID, TTL);
		this.indexOfNode = indexOfNode;
		this.firewalled = firewalled;
	}
	
	/**
	 * Índice do nó na rede. Representa o IP e a porta de conexão.
	 * @return int indexOfNode
	 */
	public int getIndexOfNode() {
		return indexOfNode;
	}

	/**
	 * Esse nó tem firewall?
	 * @return boolean firewalled
	 */
	public boolean isFirewalled(){
		return firewalled;
	}
	
	public boolean equals(Object obj) {
		if( super.equals(obj) ){
			if(obj instanceof QueryHit){
				return indexOfNode == ((QueryHit)obj).indexOfNode;
			}
		}
		return false;
	}
}
